package com.rd.teacher.jichao.day16;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class TestExecutor {

    private static final int CORE_POOL_SIZE = 5;
    private static final int MAX_POOL_SIZE = 10;
    private static final int QUEUE_CAPACITY = 2;
    private static final Long KEEP_ALIVE_TIME = 1L;

    public static void main(String[] args) {
        // 最常使用的是第三个构造器  也就是没有线程工厂的
        ThreadPoolExecutor executor =
                new ThreadPoolExecutor(
                        CORE_POOL_SIZE,
                        MAX_POOL_SIZE,
                        KEEP_ALIVE_TIME,
                        TimeUnit.SECONDS,
                        new ArrayBlockingQueue<>(QUEUE_CAPACITY),
                        new ThreadPoolExecutor.AbortPolicy());

        for (int i = 0; i < 10; i++) {
            MyRunnable runnable = new MyRunnable();
            // 相当于 new Thread(runnable).start()
            executor.execute(runnable);
        }

//        // 终止
        executor.shutdown();
//        System.out.println("finished");
    }
}
